package lxtime

import (
	"fmt"
	"time"
)

// NowUninx 当前的时间戳  （秒）
func NowUninx() int64 {
	return time.Now().Unix()
}

//// NowUnixMilli 当前的时间戳 （毫秒）
//func NowUnixMilli() int64 {
//	return time.Now().UnixMilli()
//}

//// NowUnixMicro 当前的时间戳 （微秒）
//func NowUnixMicro() int64 {
//	return time.Now().UnixMicro()
//}

// NowUnixNano 当前的时间戳 （纳秒）
func NowUnixNano() int64 {
	return time.Now().UnixNano()
}

// NowDate 当前日期字符串
func NowDate() string {
	return GetDate(NowUninx())
}

// NowTime 当前时间字符串
func NowTime() string {
	return GetTime(NowUninx())
}

// NowYear 当前时间字符串 年
func NowYear() string {
	return GetYear(NowUninx())
}

// NowMonth 当前时间字符串 月
func NowMonth() string {
	return GetMonth(NowUninx())
}

// NowDay 当前时间字符串  日
func NowDay() string {
	return GetDay(NowUninx())
}

// NowDateTime 当前日期时间字符串
func NowDateTime() string {
	return GetDateTime(NowUninx())
}

// NowZeroUninxTime 0点的时间戳
func NowZeroUninxTime() int64 {
	tim := time.Unix(NowUninx(), 0).Format("2006-01-02")
	t, _ := time.ParseInLocation("2006-01-02 15:04:05", tim+" 00:00:00", time.Local)
	return t.Unix()
}

// GetDate 时间戳转换 日期字符串
func GetDate(utime int64) string {
	tim := time.Unix(utime, 0).Format("2006-01-02")
	return fmt.Sprintf("%s", tim)
}

// GetTime 时间戳转换 时间字符串
func GetTime(utime int64) string {
	tim := time.Unix(utime, 0).Format("15:04:05")
	return fmt.Sprintf("%s", tim)
}

// GetDateTime 时间戳转换 日期时间字符串
func GetDateTime(utime int64) string {
	tim := time.Unix(utime, 0).Format("2006-01-02 15:04:05")
	return fmt.Sprintf("%s", tim)
}

// GetMonth 时间戳转换 月
func GetMonth(utime int64) string {
	tim := time.Unix(utime, 0).Format("01")
	return fmt.Sprintf("%s", tim)
}

// GetYear 时间戳转换 年
func GetYear(utime int64) string {
	tim := time.Unix(utime, 0).Format("2006")
	return fmt.Sprintf("%s", tim)
}

// GetDay 时间戳转换 日
func GetDay(utime int64) string {
	tim := time.Unix(utime, 0).Format("02")
	return fmt.Sprintf("%s", tim)
}

// GetZeroUninxTime 计算0点的时间戳
func GetZeroUninxTime(utime int64) int64 {
	tim := time.Unix(utime, 0).Format("2006-01-02")
	t, _ := time.ParseInLocation("2006-01-02 15:04:05", tim+" 00:00:00", time.Local)
	return t.Unix()
}

func GetUninxTimeByDate(date string) int64 {
	date1, _ := time.ParseInLocation("2006-01-02", date, time.Local)
	return date1.Unix()
}

func GetUninxTimeByDateTime(date string) int64 {
	date1, _ := time.ParseInLocation("2006-01-02 15:04:05", date, time.Local)
	return date1.Unix()
}
